let multer  = require("multer");
let express = require("express");
let {getIpAddress} = require('../utils/ip')
let ip = getIpAddress();
let router = express.Router();
let path = require("path");
const { readFun, writeFun } = require("../utils/readOrwirte");
let headerName = '';
// 配置multer
let multerConfig = multer.diskStorage({
    //文件上传地址
    destination:'./public/header',
    filename:function(req,file,callback){
        // console.log(file)
        // 获取用户名
        let username = req.cookies.username;
        // 获取图片后缀
        let p = path.extname(file.originalname)
         headerName = username+p;
        callback(null,headerName)
    }
})
// 使用multer配置
let uplaod = multer({storage:multerConfig});
// 用户上传头像
router.post("/upload/photo",uplaod.single("myFile"),async (req,res)=>{
    // 获取当前登录的用户名
    let username = req.cookies.username;
    // 读取用户注册信息
    let data = await readFun("./data/user.json");
    // 查询当前用户登录信息
    let index = data.findIndex((item)=>{
        return item.username === username;
    })
    if(index===-1){
        res.send({
            code:0,
            msg:"上传失败，该用户不存在"
        })
        return;
    }
    // 根据索引修改当前用户的头像地址
    data[index].header = "http://"+ip+":9090/header/"+headerName;
    // 将修改后的数据重新写入 user.json
    await writeFun("./data/user.json",JSON.stringify(data));
    // 同步list.json中的用户头像
    // 读取list.json
    let list = await readFun('./data/list.json');
    //更具当前上传头像的用户名修改论坛列表中当前用户所有有关论坛的头像地址
    list.forEach((item)=>{
        if(item.username === username){
            item.headerUrl = "http://"+ip+":9090/header/"+headerName;
        }
        // 查询评论中所有用户的头像
        item.pinglun.forEach((value)=>{
            if(value.username === username){
                value.userPhoto = "http://"+ip+":9090/header/"+headerName;
            }
        })
    })
    // 将修改后的list重新写入list.json
    await writeFun("./data/list.json",JSON.stringify(list));
    res.send({
        code:0,
        msg:"上传成功",
        url: "http://"+ip+":9090/header/"+headerName
    })
})

module.exports = router;